package com.jsong.linuo.array;

import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;

import java.util.Scanner;

public class ArrayOperations {
    public static void main(String[] args) {
        //获取数组的长度
        // 数组名.length  ->  一个属性,不是方法
        String[] arr1 = {"哈哈哈", "呵呵呵", "嘿嘿嘿", "呀呀呀"};

        int len = arr1.length;

        System.out.println("len = " + len);

        /*
            索引(下标):元素在数组中存储的位置
                特点:索引唯一,从0开始,最大索引是数组长度-1
                作用:操作元素时都是使用索引操作
         */

        //存储元素
        // 数组名[索引值] = 值
        //将右边的数据存放到数组指定的索引位置上
        int[] arr2 = new int[3];
        arr2[0] = 100;//将100存到arr2这个数组的0索引上
        arr2[1] = 200;
        arr2[2] = 300;
        //arr2[3] = 400;  没有3索引,不能操作

        //键盘录入存储到数组
        int[] arr3 = new int[3];//定义数组长度
        Scanner sc = new Scanner(System.in); //创建Scanner对象
        for (int i = 0; i < arr3.length; i++) { //arr3.length数组多长,就循环几次
            arr3[i] = sc.nextInt();
        }

        //获取数据 数组名[索引值]
        //直接输出数组名,会输出数组的地址值
        //地址值:数组在内存中的身份证号,唯一标识,我们可以通过这个唯一标识在内存中找到这个数组,从而操作数据
        int[] arr4 = new int[3];
        System.out.println(arr4);//[I@4fca772d 地址值
        System.out.println(arr4[1]);//数组中没存数据,也能获取默认数值
        //整数:0  小数:0.0  字符:'\\u000' 布尔:false  引用:null

        //遍历元素
        // 将元素从数组中一个个获取出来
        //快捷键 数组名.fori
        for (int i = 0; i < arr1.length; i++) {
            System.out.println(arr1[i]);
        }

        /*
            数组常见的两个异常
                1.数组索引越界异常_ArrayIndexOutOfBoundsException
                    操作的索引超出了数组索引的范围

                2.空指针异常_NullPointerException
                    当一个对象为null时,再调用此对象中的其他成员
                arr4 = null;//此时arr4不保存地址值,再
                System.out.println(arr4.length);//再进行操作会报错
         */


    }
}
